/*
 * 代号：凤凰
 * http://www.jphenix.org
 * 2022年8月29日
 * V4.0
 */
package com.jphenix.standard.servlet.api;

import java.io.IOException;
import java.io.OutputStream;

import com.jphenix.standard.beans.IKernel;
import com.jphenix.standard.docs.ClassInfo;


/**
 * Servlet输出流接口
 * 
 * 2022-09-04 隔离了ServletApi，兼容新老Tomcat
 * 
 * @author MBG
 * 2022年8月29日
 */
@ClassInfo({"2022-09-04 21:58","Servlet输出流"})
public class ServletOutputStream extends OutputStream implements IKernel {

	private OutputStream kernel   = null; // 核心类
	private String       encoding = null; // 输出编码格式
	
	/**
	 * 构造函数
	 * @author MBG
	 */
	public ServletOutputStream(OutputStream servletOutputStream,String enc) {
		super();
		this.kernel   = servletOutputStream;
		this.encoding = enc;
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public Object getKernel() {
		return kernel;
	}

	/**
	 * 覆盖方法
	 */
	public void println() throws IOException {
		kernel.write(new byte[] {'\r','\n'});
	}

	/**
	 * 覆盖方法
	 */
	public void println(String s) throws IOException {
		if(s!=null && s.length()>0) {
			if(encoding==null || encoding.length()<1) {
				kernel.write(s.getBytes());
			}else {
				kernel.write(s.getBytes(encoding));
			}
		}
		kernel.write(new byte[] {'\r','\n'});
	}
	
	/**
	 * 覆盖方法
	 */
	public void print(String s) throws IOException {
		if(s!=null && s.length()>0) {
			if(encoding==null || encoding.length()<1) {
				kernel.write(s.getBytes());
			}else {
				kernel.write(s.getBytes(encoding));
			}
		}
	}
	
	/**
	 * 覆盖方法
	 */
	@Override
	public void write(byte[] b) throws IOException {
		kernel.write(b);
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public void write(byte[] b, int off, int len) throws IOException {
		kernel.write(b,off,len);
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public void write(int b) throws IOException {
		kernel.write(b);
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public void flush() throws IOException {
		kernel.flush();
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public void close() throws IOException {
		kernel.close();
	}
}
